This disclosure relates to data processing and data storage, and more specifically, to background mitigation reads in a non-volatile memory system.
NAND flash memory is an electrically programmable and erasable non-volatile memory technology that stores one or more bits of data per memory cell as a charge on the floating gate of a transistor or a similar charge trap structure. The amount of charge on the floating gate modulates the threshold voltage of the transistor. By applying a proper read voltage and measuring the amount of current, the programmed threshold voltage of the memory cell can be determined and thus the stored information can be detected. Memories storing one, two, three and four bits per cell are respectively referred to in the art as Single Level Cell (SLC), Multi-Level Cell (MLC), Three Level Cell (TLC), and Quad Level Cell (QLC) memories.
In a typical implementation, a NAND flash memory array is organized in physical blocks (also referred to as “erase blocks”) of physical memory, each of which includes multiple physical pages each in turn containing a multiplicity of memory cells. By virtue of the arrangement of the word and bit lines utilized to access memory cells, flash memory arrays have generally been programmed on a physical page basis, but erased on a physical block basis. Blocks must be erased prior to being programmed.
Because the number of blocks per die and the number of physical pages per block tend to increase with each new generation of non-volatile memory, it can be impractical or even prohibitive for a controller of numerous multi-die packages to maintain unique operating parameters for each physical page under its management. As a consequence, a controller may maintain certain metadata (e.g., read threshold voltages and/or other operating parameters) for groups of physical pages having similar characteristics rather than for individual physical pages in order to reduce the amount of metadata that must be stored.
As is well known in the art, NAND flash memory is inherently susceptible to bit errors, including error caused by program disturb effects, over-programming effects, read disturb effects, data retention (i.e., errors attributable to decay of the gate charge of programmed cells over time), and wear (i.e., errors attributable to damage to the gate dielectric due to the number of cell program/erase (P/E) cycles to which the cell is subjected). In general, the bit error rate (BER) observed for a physical page of memory that is attributable to wear is permanent and increases monotonically over the life of a NAND flash memory. Similarly, program disturb and over-programming effects can be viewed as permanent; even though they disappear after an erase operation, these two types of effects influence the BER already directly after the pages are programmed. Errors, such as those caused by read disturbs and data retention, are more transient and, although generally increasing over time, disappear by erasure of the blocks containing the affected physical pages. After a physical page is programmed, these transient effects begin to reappear gradually with increasing time and an increasing number of reads.
Data storage systems employing flash memory as a storage media generally implement flash management functions to mitigate these inherent error characteristics of flash memory. Existing systems commonly integrate at least some of these flash management functions into the data path (e.g., error correcting code (ECC) encoding and RAID-like data protection schemes), while other flash management functions operate in the background independently of any external (i.e., host) requests for the data stored in the flash memory. Examples of background flash management functions common in enterprise-class flash arrays include read sweeping, which entails reading individual physical pages to detect and correct bit errors, wear leveling, which seeks to equalize the P/E cycle counts for all physical pages, and calibration, which conventionally determines appropriate read threshold voltages on a block-by-block basis.